A system may have device driver software, which provides instructions on how to control or interface with a device within the system. The driver software may be allocated to different types of memories and subsequently de-allocated. Driver memory allocation may be dynamic.
The device driver may have a plurality of portions or instances. A conventional memory management technique may load each portion or instance of the device driver into an addressed location of a memory. Multiple portions or instances of the device driver may be loaded into various locations of multiple types of memory.
There may be no concerted effort to keep track of (a) the allocated memory location of each driver portion and (b) the order of allocations to multiple types of memory. As a result, when a system closes or shuts down and memory is de-allocated (or “freed”), such de-allocation may not necessarily be complete. This may leave the system in a state where some of the memory is effectively wasted. Incomplete de-allocation may cause memory leakage and/or system crashes and other undesired effects.